// Variables para el manejo de hojas
var hojaPrincipal = "Hoja 1";

var ss = SpreadsheetApp.getActiveSpreadsheet();

var hoja = ss.getSheetByName(hojaPrincipal);

// Variables obtenidas de funciones por return
var e_number;

// función para manejar las solicitudes HTTP POST entrantes. Cuando se recibe una solicitud POST, llama a la función handleRepose y le pasa el objeto de solicitud e.

function doPost(e){

  return handleRepose(e) ;

}


  // Código para crear o obtener una hoja llamada '_Logs'
function crearHojaLogs() {

  // se crea una variable para la hoja de errores, elcódigo comprueba si la hoja ya existe, y si no la inserta.
  var sheet_log = ss.getSheetByName('_Logs');
  if (!sheet_log) {
    ss.insertSheet('_Logs');
    sheet_log = ss.getSheetByName('_Logs');
  }
  // Registramos el número de ejecuciones
  if (sheet_log.getRange('A1').isBlank()) {
    sheet_log.getRange('A1').setValue(1);

   // actualiza el recuento de ejecuciones en la celda A1 de la hoja '_Logs'sumandole 1
  } else {
    sheet_log.getRange('A1').setValue(sheet_log.getRange('A1').getValue() + 1);
  }

  // Devuelve el número de ejecución y lo almacena en la variable e_number
  e_number = sheet_log.getRange('A1').getValue();
  return e_number;
}

// Función para 

function handleRepose(e) {

  //llamamos a la función que crea la hoja de errores 
    crearHojaLogs()
 
   try{

    // Cabecera
    // La creamos si no existe
    if(hoja.getRange('A1').isBlank()){
      var h_row = []; //contenedor para almacenar con push los nombres de las cabeceras
      
      h_row.push("cen");  // numero de ejecuciones
      h_row.push("fecha-hora");
      h_row.push("nombre");
      h_row.push("Humedad Relativa %");
      h_row.push("Bateria V"); 
      h_row.push("Temperatura ºC");
      h_row.push("Seudónimos");//está columna no tiene datos entrantes. es para añadir un nombre alternativo

      //insertamos en la primera fila la cabecera
      hoja.getRange(1, 1, 1, h_row.length).setValues([h_row]);
    }

    // Parseamos los datos entrantes, que vienen en formato JSON

    // se explicará como llamar los datos dentro del JSON con mas detalle en otro ejercicio
    var jsonData = JSON.parse(e.postData.contents);
    var row = [];
      row.push(e_number);
      row.push(new Date()); 
      row.push(jsonData.end_device_ids.device_id);
      row.push(jsonData.uplink_message.decoded_payload.Hum_SHT !== undefined ? jsonData.uplink_message.decoded_payload.Hum_SHT.toString().replace('.', ',') : '');
      row.push(jsonData.uplink_message.decoded_payload.BatV !== undefined ? jsonData.uplink_message.decoded_payload.BatV.toString().replace('.', ',') : '');
      row.push(jsonData.uplink_message.decoded_payload.TempC_SHT !== undefined ? jsonData.uplink_message.decoded_payload.TempC_SHT.toString().replace('.', ',') : '');

 
    hoja.appendRow(row); //añade una fila nueva con los datos del sensor

    } catch (err) {
      // Guardamos los errores que haya podido haber
      var sheet_log = ss.getSheetByName('_Logs');
      sheet_log.appendRow([e_number, err.message]);
    }
  
    
}